package com.hs.core.dao;

import java.util.Collection;
import java.util.List;

import com.hs.core.model.BaseBean;

public interface IBaseDao {
	/**
	 * 功能:保存一个实例化对象，自动生成主键
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void save(Object obj);
	/**
	 * 功能:删除实例化对象，自动生成主键
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
    public void delete(Object obj);
    /**
	 * 功能:更新实例化对象，自动生成主键
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
    public void update(Object obj);
    /**
	 * 
	 * 功能:保存一个实例化对象，不生成主键
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void saveObject(BaseBean baseBean) ;
	/**
	 * 
	 * 功能:更新一个实例化对象
	 
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void update(BaseBean baseBean) ;
	/**
	 * 
	 * 功能:更新一个实例化对象
	 
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void save(BaseBean baseBean) ;
	/**
	 * 
	 * 功能:删除一个映射对象
	 
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void deleteObject(BaseBean baseBean) ;
	/**
	 * 
	 * 功能:删除一组映射对象
	 * 创建日期:2006-6-13
	 * @param list
	 */
	public void deleteList(Collection list) ;
	/**
	 * 
	 * 功能:根据类的对象class和id,返回id对应的对象实例
	 
	 * 创建日期:2006-6-13
	 * @param entityClass   如:BugRecord.class
	 * @param id 主键
	 * @return
	 */
	public Object findByID(Class entityClass,Long id) ;
	
	/**
	 * 
	 * 功能:根据类的对象class和id,返回id对应的对象实例
	 
	 * 创建日期:2006-6-13
	 * @param entityClass   如:BugRecord.class
	 * @param id 主键
	 * @return
	 */
	public Object findByID(Class entityClass,String id) ;
    
    /**
     * 功能:根据某属性和多个属性值删除所有记录.<br>
     * 注意：valueList中的记录应只能是类中的属性的值,Object类型<br>
     <br>
     * 创建日期:Jul 5, 2006
     * @param clas　类名
     * @param propertyName 属性名
     * @param valueList
     */
    public void delAllResultByProperty(Class clas,String propertyName,List valueList);
    
    /**
     * 功能:根据属性和属性值删除记录.<br>
     <br>
     * 创建日期:Jul 5, 2006
     * @param clas　类名
     * @param propertyName 属性名
     * @param value 属性值
     */
    public void delAllResultByProperty(Class clas,String propertyName,Object value);
    /**
     * 功能:返回根据类名和该类的实例example中有值的属性作条件查询出的唯一记录对象。
     * 必须保证本次查询返回的记录在数据库表中是唯一的，如果存在多条记录将抛出异常。
     * <br>作者: shaokun305<br>
     * 创建日期:Jul 31, 2007
     * @param classObj
     * @param exampleObj
     * @return
     */
    public Object findByExampleUnique(Class classObj,Object exampleObj);
    
    /**
     * 功能:返回根据类名和该类的实例example中有值的属性作条件查询出的记录列表。
     * <br>作者: <br>
     * 创建日期:Jul 31, 2007
     * @param classObj
     * @param exampleObj
     * @return
     */
    public List findByExample(Class classObj,Object exampleObj);
    
    /**
	 * 功能:公用的查找list的方法.实现方式为调用HibernateTemplate的find()方法去执行
	 * <br>作者: <br>
	 * 创建日期:2007-9-12
	 * @param hql
	 * @param param
	 * @return
	 */
	public List findList(String hql,Object param);
	
	/**
	 * 
	 * 功能: 获得列表
	 * 创建日期:2006-12-14
	 * @param hql
	 * @return
	 */
	public List findList(String hql);
	/**
	 * 
	 * 功能:保存一组映射对象
	 * 创建日期:2006-6-13
	 * @param list
	 */
	public void saveOrUpdateAll(Collection list);
	public void saveObjectTans(BaseBean baseBean);
}
